package dsc;

import java.net.*;

/**
 * Deze klasse bevat alle informatie over de clienten.
 */
class Clients {

    /* De next hop. */
    private ConnectedDevices conn;

    /* Als de client een beheerder is dan true anders false. */
    private boolean admin = false;
    /* De naam van de client.*/
    private String name;
    /* De status van de client.*/
    private boolean active = false;

    /**
     * De constructor van het
     *
     * @param conn          Het ip-adress en port hoe je deze client kan
     *                      bereiken.
     * @param name          User name van de client.
     */
    protected Clients(ConnectedDevices conn, String name) {
        this.conn = conn;
        this.name = name;
    }

    /**
     * Setter van de ConnectedDevice indien die veranderd wordt.
     *
     * @param conn          Het ip-adress en port hoe je deze client kan
     *                      bereiken.
     * @return
     */
    protected void setConn(ConnectedDevices conn) {
        this.conn = conn;
    }

    /**
     * Getter van de ConnectedDevice die bij de client hoort.
     *
     * @param conn          Het ip-adress en port hoe je deze client kan
     *                      bereiken.
     * @return              ConnectedDevice die bij de client hoort.
     */
    protected ConnectedDevices getConn() {
        return conn;
    }

    /**
     * Setter van het admin veld.
     *
     * @param admin         True of false voor de admin.
     * 
     * @return
     */
    protected void setAdmin(boolean admin) {
        this.admin = admin;
    }

    /**
     * Getter van de Admin veld.
     *
     * @return      Waarde van het admin veld.
     */
    protected boolean getAdmin() {
        return admin;
    }

    /**
     * Setter van het naam veld.
     *
     * @param       De nieuwe naam van de client.
     *
     * @return 
     */
    protected void setName(String name) {
        this.name = name;
    }

    /**
     * Getter van de naam veld.
     *
     * @return      Waarde van het naam veld.
     */
    protected String getName() {
        return name;
    }

    /**
     * Setter van het ip-adress veld.
     *
     * @param       De nieuwe ipadress van de client.
     *
     * @return 
     */
    protected void setIpadress(InetAddress ipadress) {
        conn.setIpadress(ipadress);
    }

    /**
     * Getter van het ip-adress veld.
     *
     * @return          Het ipadress van de client.
     */
    protected InetAddress getIpadress() {
        return conn.getIpadress();
    }

    /**
     * Setter van het port veld.
     *
     * @param       De nieuwe port van de client.
     *
     * @return
     */
    protected void setPort(int port) {
        conn.setPort(port);
    }

    /**
     * Getter van het ip-adress veld.
     *
     * @return          De port van de client.
     */
    protected int getPort() {
        return conn.getPort();
    }

    /**
     * Setter van het status veld.
     *
     * @param       De nieuwe status van de client.
     *
     * @return
     */
    protected void setStatus(boolean status) {
        active = status;
    }

    /**
     * Getter van het status veld.
     *
     * @return          Status van de client.
     */
    protected boolean getStatus() {
        return active;
    }
}
